Casper CBC: Detect invalid message
Description
What kind of errors exist?
presentation check.
e.g. does not contain the correct fields.
not equivocating, but does not match the definition.
e.g. justification contains two messages from one validator, estimate cannot be obtained from estimator.
Definitions
$ M^n := \{ m \in \mathcal{C} \times \mathcal{V} \times \mathcal{\Sigma}^n : Estimate(m) \in \mathcal{E} \ (Justification(m)) \}
$ Estimate: M \rightarrow \mathcal{C}
$ Sender: M \rightarrow \mathcal{V}
$ Justification: M \rightarrow \mathcal{\Sigma}
Note
Justifications essentially are a committment to "what I've seen as I'm creating this message" and are a mapping from validator to latest message from the validator.
Some methods require the entire justification of the message to be seen before this can be detected.
Requirements
Required fields are set.
Estimate, sender and justification are set correctly.
e.g. In binary protocol, estimate must be 0 or 1.
Justification is correct.
Justification must be at least as recent as the previous justification from validator.
Justification contains only one message from one validator.
(Breaking this doesn't mean equivocation because two messages of justification are in the only one message.)
Messages included in justification don't equivocating.
Estimate from estimator is correct.
Options (for optimization)
pending
If one of the message in justification is not justified in receiver's view, mark the message as pending and wait for the unreceived justification message.
sequence number
Each message has a consecutive number set by sender. If one receives the message having the sequence number which is equal to or earlier than (already received) known messages', the message is can be regarded as not latest.
message identification
References